package com.lihepeng.leecode.array;

import org.junit.Test;

/**
 *如果数组是单调递增或单调递减的，那么它是单调的。
 *
 * 如果对于所有 i <= j，A[i] <= A[j]，那么数组 A 是单调递增的。 如果对于所有 i <= j，A[i]> = A[j]，那么数组 A 是单调递减的。
 *
 * 当给定的数组 A 是单调数组时返回 true，否则返回 false。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/monotonic-array
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution896 {
    // 两次遍历方案
    public boolean isMonotonic(int[] A) {
        return isMontonicInner(A,true) || isMontonicInner(A,false);
    }
    private boolean isMontonicInner(int []A,boolean incr){
        if (incr){
            // 遍历数组 查看是不是都是递增的
            for (int i=0;i<A.length-1;i++){
                if (A[i]>A[i+1]){
                    return false;
                }
            }
        }else {
            for (int i=0;i<A.length-1;i++){
                if (A[i]<A[i+1]){
                    return false;
                }
            }
        }
        return true;
    }
    // 单词遍历的情况
    public boolean isMonotonic01(int[] A) {
        boolean incr = true;
        boolean decr = true;
        for (int i=0;i<A.length -1;i++){
            if (A[i]>A[i+1]){
                incr = false;
            }
            if (A[i]<A[i+1]){
                decr = false;
            }
        }
        return incr || decr;
    }
    @Test
    public void runTest(){
        int [] arrs = {1,2,3,3,4};
        int [] arrs1 = {4,4,2,1,6};
        System.out.println(this.isMonotonic01(arrs));
    }
}
